#pragma once
#include <pthread.h>
#include <string>
#include <iostream>

typedef void*(*func_t)(void*);

class ThreadDate
{
public:
    void* _args;
    std::string _name;
};

class Thread
{
public:
    Thread(int num, func_t func, void* args)
    :_func(func)
    {
        _td._name += "Thread-";
        _td._name += std::to_string(num);
        _td._args = args; // ThreadPool指针
    }

    void start()
    {
        std::cout << _td._name << " 启动" << std::endl;
        pthread_create(&_tid, nullptr, _func, (void*)(&_td));
    }

    void join()
    {
        pthread_join(_tid, nullptr);
    }

private:
    //std::string _name; // 线程名称
    func_t _func; // 线程执行函数
    ThreadDate _td; // 线程函数参数
    pthread_t _tid; // 线程id
};